package com.semac.client.aplicacao;

import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.semac.client.paginas.cadastro.CadastroUI;
import com.semac.client.paginas.chamada.ChamadaUI;
import com.semac.client.paginas.inscricao.InscricaoUI;
import com.semac.client.paginas.inscricaoatividade.InscricaoAtividadeUI;
import com.semac.client.paginas.login.LoginUI;
import com.semac.client.paginas.master.MasterPageUI;
import com.semac.client.paginas.naoencontrada.NaoEncontradaUI;
import com.semac.client.paginas.padrao.PadraoUI;
import com.semac.client.paginas.perfil.PerfilUI;
import com.semac.shared.model.Pessoa;

public class PaginasController extends AbstractPageController {
	public static final String LOGIN = "login";
	public static final String CADASTRO = "cadastro";
	public static final String INSCRICAO = "inscricao";
	public static final String COORDENACAO = "cordenacaoDaSemac";
	public static final String PERFIL = "perfil";
	public static final String NAO_ENCONTRADA = "404";
	public static final String PADRAO = "padrao";
	public static final String CHAMADA = "chamada";
	private static PaginasController instance;
	
	
	
	private MasterPageUI masterPage = new MasterPageUI(); 
	
	
	
	private PaginasController() {
		//adiciona a master page ao HTML
		super();
		RootPanel.get("_mainPanel").clear();
		RootPanel.get("_mainPanel").add(this.masterPage);
	}
	
	
	public static PaginasController getInstance(){
		if (instance == null)
			instance = new PaginasController();
		return instance;
	}
	
	
	
	
	
	
	
	@Override
	protected void decidePagina(String pagina) {
		Widget view = null;
		Pessoa pessoa = AplicacaoController.getPessoaLogada();
		
//		essa eh a logica de como os conteudos devem ser mostrados
		if (pagina.equals(CADASTRO))
			view = new CadastroUI();
		else if (pessoa == null || pagina.equals(LOGIN))
			view = new LoginUI();
		else if (pessoa != null)
			if ( pagina.equals(""))
				view = new PadraoUI();
			
			else if (pagina.equals(PERFIL))
				view = new PerfilUI();
		
			else if ((pagina.equals(INSCRICAO)) && !pessoa.ehComgrad() && !pessoa.ehComex())
				view = new InscricaoUI();			
			
			else if ((pagina.equals(COORDENACAO)) && pessoa.ehComex())
				view = new InscricaoAtividadeUI();
			
			else if ((pagina.equals(CHAMADA)) && pessoa.ehMinistrante())
				view = new ChamadaUI();
			
			
			
			//em ultimo caso, se nao encontrar nenhum match...
			else
				view = new NaoEncontradaUI();
		
		
		this.masterPage.setMainContent(view);
	}


	@Override
	protected void vaiPraPagina(Widget view) {
		this.masterPage.setMainContent(view);
	}


	

}
